package eteam.aps.service;

import eteam.aps.common.helper.JsonPage;
import eteam.aps.model.dto.ArrivalVouchQueryDto;
import eteam.aps.model.dto.SaleQueryDto;
import eteam.aps.model.export.model.*;
import eteam.aps.model.export.query.*;

import java.util.List;
import java.util.Map;

/**
 * @author Ll
 * @since 2024/1/17
 */
public interface ExportService {

    /**
     * 查询到货单信息
     *
     * @param user                 用户信息
     * @param arrivalVouchQueryDto 查询条件
     * @return 到货单信息
     */
    List<ArrivalVouchExport> arrivalVouchExport(Map<String, String> user, ArrivalVouchQueryDto arrivalVouchQueryDto);

    /**
     * 任务令产品编码状态清单分页查询
     *
     * @param productSerialQuery 查询条件
     * @return 任务令产品编码状态清单结果集
     */
    JsonPage<ProductSerialExport> productSerialJsp(ProductSerialQuery productSerialQuery);


    /**
     * 任务令产品编码状态清单
     *
     * @param productSerialQuery 查询条件
     * @return 任务令产品编码状态清单结果集
     */
    List<ProductSerialExport> productSerialExport(ProductSerialQuery productSerialQuery);

    /**
     * 任务令产品编码工序状态分页查询
     *
     * @param processingQuery 查询条件
     * @return 任务令产品编码工序状态分页查询结果集
     */
    JsonPage<ProductWorkProcessingExport> productWorkProcessingJsp(ProductWorkProcessingQuery processingQuery);


    /**
     * 任务令产品编码工序状态导出
     *
     * @param processingQuery 查询条件
     * @return 任务令产品编码工序状态结果集
     */
    List<ProductWorkProcessingExport> productWorkProcessingExport(ProductWorkProcessingQuery processingQuery);

    /**
     * 任务令产品材料序列分页查询
     *
     * @param productInvQuery 查询条件
     * @return 任务令产品材料序列结果集
     */
    JsonPage<ProductInvExport> productInvJsp(ProductInvQuery productInvQuery);

    /**
     * 任务令产品材料序列清单
     *
     * @param productInvQuery 查询条件
     */
    List<ProductInvExport> productInvExport(ProductInvQuery productInvQuery);


    /**
     * 销售单报表
     *
     * @param query 查询条件
     */
    List<SaleOrderExport> saleOrderExport(SaleQueryDto query);

    /**
     * 发货单报表
     *
     * @param query 查询条件
     */
    List<OutboundOrdersExport> outboundOrdersExport(OutboundOrdersQuery query);

    /**
     * 发货数据报表
     *
     * @param query 查询条件
     */
    List<ShipmentDataExport> shipmentDataSelect(ShipmentDataQuery query);

    /**
     * 发货数据报表
     *
     * @param query 查询条件
     */
    List<ShipmentDataExport> shipmentDataExport(ShipmentDataQuery query);

    /**
     * 质检数据报表
     *
     * @param query 查询条件
     */
    List<QualityExport> qualitySelect(QualityQuery query);

    /**
     * 质检数据报表
     *
     * @param query 查询条件
     */
    List<QualityExport> qualityExport(QualityQuery query);

    /**
     * 现存量报表
     *
     * @param query 查询条件
     */
    List<InventoryExport> inventoryExport(InventoryQuery query) throws Exception;

    /**
     * 现存量报表
     *
     * @param query 查询条件
     */
    JsonPage<InventoryExport> inventorySelect(InventoryQuery query) throws Exception;

    /**
     * 送货单报表
     *
     * @param query 查询条件
     */
    InvoicesExport deliveryNoteSelect(InvoicesQuery query);
}
